#include<stdio.h>
#include<string.h>
int len=0;
struct  students{
	char name[4];
	int number;
	int grades1;
	int grades2;
	int grades3;
    int total;
    int paimin;
}stu[10]={0};

void input(void){ //输入
    printf("请输入学生总人数:<=10:");
    scanf("%d",&len);
    if(len >10){
        printf("请输入10以内的数\n");
        return;
    }
    for(int i=0;i<len;i++){
        printf("请输入第%d名学生姓名： 学号：  第一们成绩： 第二们成绩： 第三们成绩：(用空格隔开)\n",i+1);
        scanf("%s %d %d %d %d",stu[i].name,&stu[i].number,&stu[i].grades1,&stu[i].grades2,&stu[i].grades3);
    }
}

void statistics(void){ //总分
    for(int i=0;i<len;i++){
        stu[i].total=stu[i].grades1+stu[i].grades2+stu[i].grades3;
    }		
}

void sort(void){    //排序
    int pai[10]={0};
    int n=len;
    for(int i= 0;i<len;i++){
        pai[i]=stu[i].total;
    }
    for(int i=0;i<len-1;i++){
        for(int j=0;j<len-i-1;j++){
            if(pai[j] < pai[j+1]){
                int temp=pai[j];
                pai[j]=pai[j+1];
                pai[j+1]=temp;
            }
        }
    }

    for(int i=0;i<n;i++){   //去掉重复,有的成绩一样,排名也要一样
        for(int j=i+1;j<n;j++){
            if(pai[j] == pai[i]){
                int tmp;
                for(tmp=j;tmp<len;tmp++){
                    pai[tmp]=pai[tmp+1];
                }
                j--;
                n--;
            }
        }
        
    }

    for(int i=0;i<len;i++){ //根据成绩排名
        for(int j=0;j<len;j++){
            if(pai[i] == stu[j].total){
               stu[j].paimin=i+1; 
            }
        }      
    }
}

int search(int n){   //寻找
    for(int i=0; i<len;i++){
        if(stu[i].number == n){
            printf("学生姓名：%s 学号：%d  第一们成绩：%d 第二们成绩：%d 第三们成绩：%d 总分:%d 排名：%d \n",
            stu[i].name,stu[i].number,stu[i].grades1,stu[i].grades2,stu[i].grades3,stu[i].total,stu[i].paimin);
        }
    }
}

void dayin(void){   //按排名打印全部学生信息
    for(int i=0; i<len;i++){
        for(int j=0;j<len;j++){
            if(stu[j].paimin == (i+1)){
                printf("学生姓名：%s 学号：%d  第一们成绩：%d 第二们成绩：%d 第三们成绩：%d 总分:%d 排名：%d \n",
                stu[j].name,stu[j].number,stu[j].grades1,stu[j].grades2,stu[j].grades3,stu[j].total,stu[j].paimin);
            }
        }
    }
}

int main(void)
{	
    int true=1,k=0;
    while(true){
        printf("请选择:1输入,2总分,3排序,4寻找,5打印,6退出\n");
        scanf("%d",&k);
        if(k == 1){
            input();
        }
         else if(k == 2){
            statistics();
        }
        else if(k == 3){
            sort();
        }
        else if(k == 4){
            int n=0;
            printf("请输入学号查找:");
            scanf("%d",&n);
            search(n);
        }
        else if(k == 5){
            dayin();
        }
        else{
            true=0;
        }
    }


	return 0;
}